1551E - Fixed Points - CodeForces Solution


binary search brute force dp *2000

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>

using namespace std;

int v[6005], dp[6005][6005];

int n, k;

signed main()
{
    int t;
    cin >> t;
    while(t--)
    {
        cin >> n >> k;
        for(int i = 1; i <= n; i++)
            cin >> v[i];
        for(int i = 0; i <= n; i++)
        {
            for(int j = 0; j <= i; j++)
            {
                dp[i][j] = 0;
            }
        }
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j <= i; j++)
            {
                dp[i + 1][j] = max(dp[i + 1][j], dp[i][j]);
                dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j] + ((v[i + 1] == j + 1) ? 1 : 0));
            }
        }
        int rasp = -1;
        for(int i = n; i >= 0; i--)
        {
            if(dp[n][i] >= k)
            {
                rasp = n - i;
                break;
            }
        }
        cout << rasp << '\n';
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

454A - Little Pony and Crystal Mine
2A - Winner
1622B - Berland Music
1139B - Chocolates
1371A - Magical Sticks
1253A - Single Push
706B - Interesting drink
1265A - Beautiful String
214A - System of Equations
287A - IQ Test
1108A - Two distinct points
1064A - Make a triangle
1245C - Constanze's Machine
1005A - Tanya and Stairways
1663F - In Every Generation
1108B - Divisors of Two Integers
1175A - From Hero to Zero
1141A - Game 23
1401B - Ternary Sequence
598A - Tricky Sum
519A - A and B and Chess
725B - Food on the Plane
154B - Colliders
127B - Canvas Frames
107B - Basketball Team
245A - System Administrator
698A - Vacations
1216B - Shooting
368B - Sereja and Suffixes
1665C - Tree Infection